package belleza.relativa
/*
 * La idea es que no se borren las conversaciones, sino que se setee la fecha del primer mensaje a mostrar cosa que los
 * anteriores no se muestran y parece como si los borro.
 * Esto es transparente al usuario
 * */
class Conversacion implements Cloneable {

    static constraints = {
        primeraPersona(nullable: false, unique: ['segundaPersona'])
        segundaPersona(
                nullable: false)
        fechaPrimerMensajeAMostrar(nullable: false)
    }

    def static hasMany = [mensajes: Mensaje]
    def static belongsTo = [persona: Persona]

    Persona primeraPersona
    Persona segundaPersona
    boolean mensajesSinLeer
    Date fechaPrimerMensajeAMostrar
    boolean borrada

    def lastMesaje() {
        def list = this.mensajes?.sort {
            a, b ->
            return a.fechaEmision <= b.fechaEmision ? 1 : 0
        }
        return list ? list.get(0).mensaje : ""
    }

    def hasMensajesSinLeer() {
        def noLeidos = Mensaje.findAllWhere(emisor: primeraPersona, receptor: segundaPersona, leido: false);
        noLeidos.addAll(Mensaje.findAllWhere(emisor: segundaPersona , receptor: primeraPersona, leido: false));
        return noLeidos.size() != 0
    }

    def mensajesSinLeer(Persona currentUser) {
        if (currentUser.equals(primeraPersona)){
            return Mensaje.findAllWhere(emisor: primeraPersona, receptor: segundaPersona, leido: false);
        } else {
            return Mensaje.findAllWhere(emisor: segundaPersona , receptor: primeraPersona, leido: false);
        }
        return null;
    }

}
